<?php

namespace app\common\controller;

use think\Controller;

class Backend extends Controller
{
    // 不需要的登录数组
    protected $NoNeedLogin = [];

    public function __construct()
    {
        parent::__construct();

        // 引用admin模型
        $this->AdminModel = model('Admin');
        $this->ConfigModel = model('Config');

        // 去除数组里的空元素
        $NoNeedLogin = array_filter($this->NoNeedLogin);

        // 如果为空需要登录
        if(empty($NoNeedLogin))
        {
            $this->IsLogin();
        }else{

            // 所有的方法
            $all = '*';

            // 获取访问的方法
            $action = $this->request->action();

            // dump(!in_array($all,$NoNeedLogin) && !in_array($action,$NoNeedLogin));
            // exit;

            // 只要两个条件里面其中一个满足都是不需要登录的
            if(!in_array($all,$NoNeedLogin) && !in_array($action,$NoNeedLogin))
            {
                $this->IsLogin();
            }
        }

        // 调用获取系统配置的方法
        $this->system();

    }

    // 验证是否登录
    public function IsLogin()
    {
        // 获取到session
        $LoginAdmin = session('LoginAdmin');

        if(!empty($LoginAdmin))
        {
            $id = isset($LoginAdmin['id']) ? $LoginAdmin['id'] : 0;

            $admin = $this->AdminModel->find($id);

            if(!$admin)
            {
                session('LoginAdmin',null);
                $this->error('非法登录',url('admin/index/login'));
                exit;
            }

            if($admin['state'] != 1)
            {
                session('LoginAdmin',null);
                $this->error('该用户异常，请重新输入',url('admin/index/login'));
                exit;
            }

            // 赋值 让所有控制器可以获取到登录的用户
            $this->LoginAdmin = $admin;

            // 模板赋值
            $this->assign('LoginAdmin',$admin);

        }else{
            $this->error('请先登录',url('admin/index/login'));
            exit;
        }
    }


    public function system()
    {
        $SystemList = $this->ConfigModel->select();
        // halt($SystemList);

        // 定义一个空数组
        $System = [];

        foreach ($SystemList as $key => $item) {
            $System[$item['key']] = $item['value'];
        }

        // 赋值给所有的视图
        $this->assign('System',$System);
    }
}